namespace Core.Features
{
    using System;
    using Base;
    using Contracts.Enums;

    
    public sealed class AmmunitionType<T> : FeatureBase<object>
    {
        public AmmunitionType(){}
        
        public AmmunitionType(T ammoType)
            : base(ammoType)
        {
        }
        /// <summary>
        /// Obtains the feature name
        /// </summary>
        public override string Name
        {
            get { return "Ammo type"; }
        }
        /// <summary>
        /// Obtains the feature group
        /// </summary>
        public override FeatureGroupsEnum FeatureGroup{ get { return FeatureGroupsEnum.Specific; } }
        /// <summary>
        /// Obtains the feature type
        /// </summary>
        public override FeaturesEnum FeatureType { get { return FeaturesEnum.AmmoType; } }
        /// <summary>
        /// Obtains or defines the feature unit
        /// </summary>
        public override string Unit { get { return string.Empty ; } }
        /// <summary>
        /// Obtains the feature text value
        /// </summary>
        public override string FormattedValue
        {
            get
            {
                switch ((AmmunitionTypesEnum)Value)
                {
                    case AmmunitionTypesEnum.EnergyInjectorCharges:
                        return "Energy injector charges";
                    case AmmunitionTypesEnum.GeoscannerCharges:
                        return "Geoscanner charges";
                    case AmmunitionTypesEnum.HarvesterCharges:
                        return "Harvester charges";
                    case AmmunitionTypesEnum.MediumBullets:
                        return "Medium bullets";
                    case AmmunitionTypesEnum.MediumEnergyCells:
                        return "Medium energy cells";
                    case AmmunitionTypesEnum.MediumMissiles:
                        return "Medium missiles";
                    case AmmunitionTypesEnum.MediumSlugs:
                        return "Medium slugs";
                    case AmmunitionTypesEnum.MinerCharges:
                        return "Miner charges";
                    case AmmunitionTypesEnum.SmallBullets:
                        return "Small bullets";
                    case AmmunitionTypesEnum.SmallEnergyCells:
                        return "Small energy cells";
                    case AmmunitionTypesEnum.SmallMissiles:
                        return "Small missiles";
                    case AmmunitionTypesEnum.SmallSlugs:
                        return "Small slugs";
                    default:
                        return Value.ToString();
                }
            }
        }
    }
}